{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Importing Packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "snCCQQR5vx-h"
   },
   "outputs": [],
   "source": [
    "import numpy as np \n",
    "import matplotlib.pyplot as plt "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Hyper Parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "msg_total = 8\n",
    "channel = 4\n",
    "epochs = 1000\n",
    "batch_size = 1024\n",
    "x=np.random.randint(0,8,10000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Supervised Learning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ursgArgfwUWR"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, GaussianNoise\n",
    "from keras.wrappers.scikit_learn import KerasClassifier\n",
    "\n",
    "def func():\n",
    "    model = Sequential()\n",
    "    model.add(Dense(msg_total,input_dim=1,activation='relu'))\n",
    "    model.add(Dense(2*channel, activation = 'linear'))\n",
    "    model.add(GaussianNoise(1))\n",
    "    model.add(Dense(msg_total, activation = 'softmax'))\n",
    "    model.compile(loss='categorical_crossentropy', optimizer='adam',metrics=['acc'])\n",
    "    return model\n",
    "  \n",
    "estimator=KerasClassifier(build_fn=func,epochs=epochs,batch_size=batch_size,verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 34017
    },
    "colab_type": "code",
    "id": "qaOD3e-r3GMp",
    "outputId": "e3061f30-3e84-43e3-9fac-8f13b80fb7c8",
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/1000\n",
      "10000/10000 [==============================] - 2s 159us/step - loss: 3.0989 - acc: 0.0958\n",
      "Epoch 2/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 2.9755 - acc: 0.1041\n",
      "Epoch 3/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 2.8776 - acc: 0.1152\n",
      "Epoch 4/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 2.7888 - acc: 0.1206\n",
      "Epoch 5/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 2.6900 - acc: 0.1286\n",
      "Epoch 6/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 2.6362 - acc: 0.1328\n",
      "Epoch 7/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 2.5812 - acc: 0.1336\n",
      "Epoch 8/1000\n",
      "10000/10000 [==============================] - 0s 13us/step - loss: 2.5285 - acc: 0.1399\n",
      "Epoch 9/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 2.4977 - acc: 0.1470\n",
      "Epoch 10/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 2.4391 - acc: 0.1488\n",
      "Epoch 11/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.4125 - acc: 0.1484\n",
      "Epoch 12/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.3789 - acc: 0.1550\n",
      "Epoch 13/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.3289 - acc: 0.1578\n",
      "Epoch 14/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.3275 - acc: 0.1558\n",
      "Epoch 15/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.2984 - acc: 0.1611\n",
      "Epoch 16/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.2669 - acc: 0.1692\n",
      "Epoch 17/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.2378 - acc: 0.1720\n",
      "Epoch 18/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.2274 - acc: 0.1743\n",
      "Epoch 19/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.2024 - acc: 0.1774\n",
      "Epoch 20/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 2.1759 - acc: 0.1799\n",
      "Epoch 21/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.1642 - acc: 0.1880\n",
      "Epoch 22/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.1533 - acc: 0.1846\n",
      "Epoch 23/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.1237 - acc: 0.1902\n",
      "Epoch 24/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.1018 - acc: 0.1953\n",
      "Epoch 25/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.0786 - acc: 0.1993\n",
      "Epoch 26/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.0619 - acc: 0.1967\n",
      "Epoch 27/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.0517 - acc: 0.1988\n",
      "Epoch 28/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 2.0333 - acc: 0.2081\n",
      "Epoch 29/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 2.0161 - acc: 0.2088\n",
      "Epoch 30/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.9915 - acc: 0.2106\n",
      "Epoch 31/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.9811 - acc: 0.2179\n",
      "Epoch 32/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.9530 - acc: 0.2280\n",
      "Epoch 33/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.9489 - acc: 0.2262\n",
      "Epoch 34/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.9277 - acc: 0.2320\n",
      "Epoch 35/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.9123 - acc: 0.2257\n",
      "Epoch 36/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.8918 - acc: 0.2341\n",
      "Epoch 37/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.8785 - acc: 0.2373\n",
      "Epoch 38/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.8532 - acc: 0.2442\n",
      "Epoch 39/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.8485 - acc: 0.2373\n",
      "Epoch 40/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 1.8216 - acc: 0.2508\n",
      "Epoch 41/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.8177 - acc: 0.2517\n",
      "Epoch 42/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.7970 - acc: 0.2527\n",
      "Epoch 43/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.7828 - acc: 0.2633\n",
      "Epoch 44/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.7699 - acc: 0.2632\n",
      "Epoch 45/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.7558 - acc: 0.2597\n",
      "Epoch 46/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.7480 - acc: 0.2629\n",
      "Epoch 47/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.7353 - acc: 0.2628\n",
      "Epoch 48/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.7142 - acc: 0.2763\n",
      "Epoch 49/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.6949 - acc: 0.2831\n",
      "Epoch 50/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.6919 - acc: 0.2743\n",
      "Epoch 51/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.6732 - acc: 0.2831\n",
      "Epoch 52/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.6604 - acc: 0.2914\n",
      "Epoch 53/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.6475 - acc: 0.2946\n",
      "Epoch 54/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.6371 - acc: 0.2975\n",
      "Epoch 55/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.6297 - acc: 0.2900\n",
      "Epoch 56/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.6178 - acc: 0.2980\n",
      "Epoch 57/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.5904 - acc: 0.3142\n",
      "Epoch 58/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.5901 - acc: 0.3080\n",
      "Epoch 59/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.5869 - acc: 0.3079\n",
      "Epoch 60/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.5741 - acc: 0.3152\n",
      "Epoch 61/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 1.5594 - acc: 0.3196\n",
      "Epoch 62/1000\n",
      "10000/10000 [==============================] - 0s 12us/step - loss: 1.5451 - acc: 0.3236\n",
      "Epoch 63/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 1.5428 - acc: 0.3215\n",
      "Epoch 64/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.5327 - acc: 0.3275\n",
      "Epoch 65/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.5264 - acc: 0.3346\n",
      "Epoch 66/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.5129 - acc: 0.3340\n",
      "Epoch 67/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.5058 - acc: 0.3308\n",
      "Epoch 68/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.4913 - acc: 0.3405\n",
      "Epoch 69/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4865 - acc: 0.3447\n",
      "Epoch 70/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4783 - acc: 0.3426\n",
      "Epoch 71/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4726 - acc: 0.3442\n",
      "Epoch 72/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.4610 - acc: 0.3555\n",
      "Epoch 73/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.4519 - acc: 0.3525\n",
      "Epoch 74/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4496 - acc: 0.3576\n",
      "Epoch 75/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4378 - acc: 0.3636\n",
      "Epoch 76/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.4298 - acc: 0.3602\n",
      "Epoch 77/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4233 - acc: 0.3714\n",
      "Epoch 78/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4086 - acc: 0.3772\n",
      "Epoch 79/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.4005 - acc: 0.3782\n",
      "Epoch 80/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.4012 - acc: 0.3773\n",
      "Epoch 81/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3888 - acc: 0.3806\n",
      "Epoch 82/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.3820 - acc: 0.3844\n",
      "Epoch 83/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3776 - acc: 0.3876\n",
      "Epoch 84/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3726 - acc: 0.3835\n",
      "Epoch 85/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3673 - acc: 0.3901\n",
      "Epoch 86/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3534 - acc: 0.4013\n",
      "Epoch 87/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3464 - acc: 0.4038\n",
      "Epoch 88/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.3496 - acc: 0.4003\n",
      "Epoch 89/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3373 - acc: 0.4089\n",
      "Epoch 90/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3305 - acc: 0.4036\n",
      "Epoch 91/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3252 - acc: 0.4108\n",
      "Epoch 92/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3137 - acc: 0.4198\n",
      "Epoch 93/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.3135 - acc: 0.4130\n",
      "Epoch 94/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.3049 - acc: 0.4207\n",
      "Epoch 95/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2964 - acc: 0.4236\n",
      "Epoch 96/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.2912 - acc: 0.4270\n",
      "Epoch 97/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2888 - acc: 0.4298\n",
      "Epoch 98/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2835 - acc: 0.4232\n",
      "Epoch 99/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.2764 - acc: 0.4319\n",
      "Epoch 100/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2689 - acc: 0.4437\n",
      "Epoch 101/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2661 - acc: 0.4429\n",
      "Epoch 102/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2634 - acc: 0.4440\n",
      "Epoch 103/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.2540 - acc: 0.4451\n",
      "Epoch 104/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.2490 - acc: 0.4474\n",
      "Epoch 105/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.2391 - acc: 0.4536\n",
      "Epoch 106/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2361 - acc: 0.4516\n",
      "Epoch 107/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2330 - acc: 0.4546\n",
      "Epoch 108/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2257 - acc: 0.4572\n",
      "Epoch 109/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.2198 - acc: 0.4623\n",
      "Epoch 110/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2138 - acc: 0.4626\n",
      "Epoch 111/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2085 - acc: 0.4695\n",
      "Epoch 112/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2064 - acc: 0.4747\n",
      "Epoch 113/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.2036 - acc: 0.4666\n",
      "Epoch 114/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.1985 - acc: 0.4807\n",
      "Epoch 115/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1907 - acc: 0.4775\n",
      "Epoch 116/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1876 - acc: 0.4743\n",
      "Epoch 117/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1842 - acc: 0.4807\n",
      "Epoch 118/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.1815 - acc: 0.4857\n",
      "Epoch 119/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1706 - acc: 0.4843\n",
      "Epoch 120/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1695 - acc: 0.4807\n",
      "Epoch 121/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.1568 - acc: 0.4962\n",
      "Epoch 122/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1598 - acc: 0.4936\n",
      "Epoch 123/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1484 - acc: 0.4969\n",
      "Epoch 124/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.1443 - acc: 0.5040\n",
      "Epoch 125/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.1429 - acc: 0.5084\n",
      "Epoch 126/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1425 - acc: 0.5074\n",
      "Epoch 127/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1347 - acc: 0.5158\n",
      "Epoch 128/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1291 - acc: 0.5175\n",
      "Epoch 129/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1242 - acc: 0.5065\n",
      "Epoch 130/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 1.1171 - acc: 0.5309\n",
      "Epoch 131/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1170 - acc: 0.5146\n",
      "Epoch 132/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1114 - acc: 0.5220\n",
      "Epoch 133/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1042 - acc: 0.5312\n",
      "Epoch 134/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.1001 - acc: 0.5233\n",
      "Epoch 135/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.0962 - acc: 0.5286\n",
      "Epoch 136/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0942 - acc: 0.5306\n",
      "Epoch 137/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0910 - acc: 0.5297\n",
      "Epoch 138/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0858 - acc: 0.5292\n",
      "Epoch 139/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0770 - acc: 0.5408\n",
      "Epoch 140/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0784 - acc: 0.5378\n",
      "Epoch 141/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0698 - acc: 0.5443\n",
      "Epoch 142/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0674 - acc: 0.5423\n",
      "Epoch 143/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0652 - acc: 0.5500\n",
      "Epoch 144/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0592 - acc: 0.5495\n",
      "Epoch 145/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0498 - acc: 0.5567\n",
      "Epoch 146/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0504 - acc: 0.5610\n",
      "Epoch 147/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0447 - acc: 0.5587\n",
      "Epoch 148/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0408 - acc: 0.5608\n",
      "Epoch 149/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0366 - acc: 0.5657\n",
      "Epoch 150/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 1.0354 - acc: 0.5635\n",
      "Epoch 151/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.0345 - acc: 0.5600\n",
      "Epoch 152/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0273 - acc: 0.5735\n",
      "Epoch 153/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0204 - acc: 0.5831\n",
      "Epoch 154/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0174 - acc: 0.5814\n",
      "Epoch 155/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 1.0187 - acc: 0.5684\n",
      "Epoch 156/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0118 - acc: 0.5686\n",
      "Epoch 157/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 1.0085 - acc: 0.5855\n",
      "Epoch 158/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 1.0025 - acc: 0.5846\n",
      "Epoch 159/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 1.0010 - acc: 0.5784\n",
      "Epoch 160/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.9987 - acc: 0.5920\n",
      "Epoch 161/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9908 - acc: 0.5864\n",
      "Epoch 162/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.9858 - acc: 0.5921\n",
      "Epoch 163/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9806 - acc: 0.5932\n",
      "Epoch 164/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9814 - acc: 0.5901\n",
      "Epoch 165/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.9777 - acc: 0.5907\n",
      "Epoch 166/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.9766 - acc: 0.5959\n",
      "Epoch 167/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.9712 - acc: 0.5957\n",
      "Epoch 168/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9639 - acc: 0.5975\n",
      "Epoch 169/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9609 - acc: 0.6008\n",
      "Epoch 170/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9583 - acc: 0.6124\n",
      "Epoch 171/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9571 - acc: 0.5974\n",
      "Epoch 172/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9526 - acc: 0.6037\n",
      "Epoch 173/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9499 - acc: 0.5998\n",
      "Epoch 174/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.9412 - acc: 0.6157\n",
      "Epoch 175/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.9373 - acc: 0.6137\n",
      "Epoch 176/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.9337 - acc: 0.6148\n",
      "Epoch 177/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.9325 - acc: 0.6204\n",
      "Epoch 178/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9305 - acc: 0.6122\n",
      "Epoch 179/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9278 - acc: 0.6136\n",
      "Epoch 180/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.9209 - acc: 0.6215\n",
      "Epoch 181/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.9142 - acc: 0.6241\n",
      "Epoch 182/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9167 - acc: 0.6133\n",
      "Epoch 183/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9114 - acc: 0.6265\n",
      "Epoch 184/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9045 - acc: 0.6305\n",
      "Epoch 185/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.9040 - acc: 0.6210\n",
      "Epoch 186/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.9020 - acc: 0.6258\n",
      "Epoch 187/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8962 - acc: 0.6340\n",
      "Epoch 188/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8930 - acc: 0.6318\n",
      "Epoch 189/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8935 - acc: 0.6369\n",
      "Epoch 190/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.8865 - acc: 0.6346\n",
      "Epoch 191/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8853 - acc: 0.6379\n",
      "Epoch 192/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8805 - acc: 0.6339\n",
      "Epoch 193/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8757 - acc: 0.6395\n",
      "Epoch 194/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8719 - acc: 0.6427\n",
      "Epoch 195/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8738 - acc: 0.6355\n",
      "Epoch 196/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8682 - acc: 0.6401\n",
      "Epoch 197/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8625 - acc: 0.6491\n",
      "Epoch 198/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8653 - acc: 0.6460\n",
      "Epoch 199/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8613 - acc: 0.6443\n",
      "Epoch 200/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8564 - acc: 0.6437\n",
      "Epoch 201/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8517 - acc: 0.6537\n",
      "Epoch 202/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8486 - acc: 0.6396\n",
      "Epoch 203/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8423 - acc: 0.6635\n",
      "Epoch 204/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8433 - acc: 0.6489\n",
      "Epoch 205/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8381 - acc: 0.6586\n",
      "Epoch 206/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8354 - acc: 0.6540\n",
      "Epoch 207/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8347 - acc: 0.6530\n",
      "Epoch 208/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8296 - acc: 0.6570\n",
      "Epoch 209/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8240 - acc: 0.6667\n",
      "Epoch 210/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8253 - acc: 0.6627\n",
      "Epoch 211/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8224 - acc: 0.6632\n",
      "Epoch 212/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8164 - acc: 0.6626\n",
      "Epoch 213/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8176 - acc: 0.6646\n",
      "Epoch 214/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8128 - acc: 0.6704\n",
      "Epoch 215/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.8088 - acc: 0.6719\n",
      "Epoch 216/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.8084 - acc: 0.6612\n",
      "Epoch 217/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.8005 - acc: 0.6797\n",
      "Epoch 218/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7987 - acc: 0.6750\n",
      "Epoch 219/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7950 - acc: 0.6758\n",
      "Epoch 220/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7933 - acc: 0.6739\n",
      "Epoch 221/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7901 - acc: 0.6766\n",
      "Epoch 222/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7883 - acc: 0.6684\n",
      "Epoch 223/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7804 - acc: 0.6831\n",
      "Epoch 224/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7837 - acc: 0.6741\n",
      "Epoch 225/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7775 - acc: 0.6868\n",
      "Epoch 226/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7746 - acc: 0.6849\n",
      "Epoch 227/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7698 - acc: 0.6798\n",
      "Epoch 228/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7656 - acc: 0.6866\n",
      "Epoch 229/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7655 - acc: 0.6810\n",
      "Epoch 230/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7623 - acc: 0.6889\n",
      "Epoch 231/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7605 - acc: 0.6812\n",
      "Epoch 232/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7549 - acc: 0.6897\n",
      "Epoch 233/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7525 - acc: 0.6941\n",
      "Epoch 234/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7535 - acc: 0.6837\n",
      "Epoch 235/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7471 - acc: 0.6947\n",
      "Epoch 236/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7488 - acc: 0.6890\n",
      "Epoch 237/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7428 - acc: 0.6887\n",
      "Epoch 238/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7425 - acc: 0.6889\n",
      "Epoch 239/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7389 - acc: 0.6971\n",
      "Epoch 240/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7369 - acc: 0.6968\n",
      "Epoch 241/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7314 - acc: 0.6936\n",
      "Epoch 242/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7283 - acc: 0.7023\n",
      "Epoch 243/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7239 - acc: 0.7066\n",
      "Epoch 244/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7240 - acc: 0.7008\n",
      "Epoch 245/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7182 - acc: 0.7076\n",
      "Epoch 246/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7161 - acc: 0.7056\n",
      "Epoch 247/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.7122 - acc: 0.7100\n",
      "Epoch 248/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.7073 - acc: 0.7129\n",
      "Epoch 249/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7050 - acc: 0.7205\n",
      "Epoch 250/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.7024 - acc: 0.7234\n",
      "Epoch 251/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6997 - acc: 0.7188\n",
      "Epoch 252/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.6966 - acc: 0.7309\n",
      "Epoch 253/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6956 - acc: 0.7225\n",
      "Epoch 254/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6919 - acc: 0.7250\n",
      "Epoch 255/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6867 - acc: 0.7361\n",
      "Epoch 256/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6845 - acc: 0.7350\n",
      "Epoch 257/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6806 - acc: 0.7423\n",
      "Epoch 258/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6793 - acc: 0.7403\n",
      "Epoch 259/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6716 - acc: 0.7509\n",
      "Epoch 260/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6706 - acc: 0.7471\n",
      "Epoch 261/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.6663 - acc: 0.7557\n",
      "Epoch 262/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6659 - acc: 0.7504\n",
      "Epoch 263/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6623 - acc: 0.7579\n",
      "Epoch 264/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6566 - acc: 0.7572\n",
      "Epoch 265/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6534 - acc: 0.7631\n",
      "Epoch 266/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6531 - acc: 0.7643\n",
      "Epoch 267/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6398 - acc: 0.7800\n",
      "Epoch 268/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6406 - acc: 0.7799\n",
      "Epoch 269/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6315 - acc: 0.7876\n",
      "Epoch 270/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6303 - acc: 0.7840\n",
      "Epoch 271/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6242 - acc: 0.7904\n",
      "Epoch 272/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6181 - acc: 0.7941\n",
      "Epoch 273/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6107 - acc: 0.7971\n",
      "Epoch 274/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.6076 - acc: 0.8005\n",
      "Epoch 275/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.6038 - acc: 0.8052\n",
      "Epoch 276/1000\n",
      "10000/10000 [==============================] - ETA: 0s - loss: 0.5942 - acc: 0.814 - 0s 7us/step - loss: 0.5938 - acc: 0.8142\n",
      "Epoch 277/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5884 - acc: 0.8170\n",
      "Epoch 278/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5838 - acc: 0.8249\n",
      "Epoch 279/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5779 - acc: 0.8232\n",
      "Epoch 280/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5649 - acc: 0.8395\n",
      "Epoch 281/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5585 - acc: 0.8432\n",
      "Epoch 282/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5512 - acc: 0.8447\n",
      "Epoch 283/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5496 - acc: 0.8449\n",
      "Epoch 284/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5357 - acc: 0.8555\n",
      "Epoch 285/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5317 - acc: 0.8556\n",
      "Epoch 286/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5240 - acc: 0.8531\n",
      "Epoch 287/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.5177 - acc: 0.8616\n",
      "Epoch 288/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5112 - acc: 0.8643\n",
      "Epoch 289/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5066 - acc: 0.8666\n",
      "Epoch 290/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.5023 - acc: 0.8675\n",
      "Epoch 291/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4921 - acc: 0.8741\n",
      "Epoch 292/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4902 - acc: 0.8708\n",
      "Epoch 293/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4863 - acc: 0.8744\n",
      "Epoch 294/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4790 - acc: 0.8808\n",
      "Epoch 295/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4711 - acc: 0.8826\n",
      "Epoch 296/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4700 - acc: 0.8827\n",
      "Epoch 297/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4596 - acc: 0.8884\n",
      "Epoch 298/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4601 - acc: 0.8862\n",
      "Epoch 299/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4502 - acc: 0.8930\n",
      "Epoch 300/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4475 - acc: 0.8927\n",
      "Epoch 301/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4455 - acc: 0.8937\n",
      "Epoch 302/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4383 - acc: 0.8974\n",
      "Epoch 303/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4311 - acc: 0.9005\n",
      "Epoch 304/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.4300 - acc: 0.8989\n",
      "Epoch 305/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4238 - acc: 0.9027\n",
      "Epoch 306/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4217 - acc: 0.9042\n",
      "Epoch 307/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4150 - acc: 0.9030\n",
      "Epoch 308/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4132 - acc: 0.9045\n",
      "Epoch 309/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.4058 - acc: 0.9098\n",
      "Epoch 310/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4049 - acc: 0.9100\n",
      "Epoch 311/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.4022 - acc: 0.9063\n",
      "Epoch 312/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3946 - acc: 0.9099\n",
      "Epoch 313/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3930 - acc: 0.9135\n",
      "Epoch 314/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3911 - acc: 0.9119\n",
      "Epoch 315/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3860 - acc: 0.9140\n",
      "Epoch 316/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3850 - acc: 0.9127\n",
      "Epoch 317/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3763 - acc: 0.9206\n",
      "Epoch 318/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3798 - acc: 0.9131\n",
      "Epoch 319/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3747 - acc: 0.9197\n",
      "Epoch 320/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3676 - acc: 0.9188\n",
      "Epoch 321/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.3669 - acc: 0.9197\n",
      "Epoch 322/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3609 - acc: 0.9246\n",
      "Epoch 323/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3613 - acc: 0.9191\n",
      "Epoch 324/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3549 - acc: 0.9275\n",
      "Epoch 325/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3532 - acc: 0.9251\n",
      "Epoch 326/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3499 - acc: 0.9252\n",
      "Epoch 327/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3460 - acc: 0.9248\n",
      "Epoch 328/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.3449 - acc: 0.9265\n",
      "Epoch 329/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3428 - acc: 0.9247\n",
      "Epoch 330/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3379 - acc: 0.9292\n",
      "Epoch 331/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3345 - acc: 0.9321\n",
      "Epoch 332/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.3326 - acc: 0.9292\n",
      "Epoch 333/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.3294 - acc: 0.9370\n",
      "Epoch 334/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3257 - acc: 0.9345\n",
      "Epoch 335/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3243 - acc: 0.9343\n",
      "Epoch 336/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.3185 - acc: 0.9381\n",
      "Epoch 337/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3179 - acc: 0.9393\n",
      "Epoch 338/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3133 - acc: 0.9393\n",
      "Epoch 339/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3113 - acc: 0.9433\n",
      "Epoch 340/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.3109 - acc: 0.9392\n",
      "Epoch 341/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3074 - acc: 0.9418\n",
      "Epoch 342/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.3021 - acc: 0.9435\n",
      "Epoch 343/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3024 - acc: 0.9368\n",
      "Epoch 344/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.3006 - acc: 0.9443\n",
      "Epoch 345/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2937 - acc: 0.9468\n",
      "Epoch 346/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2915 - acc: 0.9476\n",
      "Epoch 347/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2905 - acc: 0.9439\n",
      "Epoch 348/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2892 - acc: 0.9437\n",
      "Epoch 349/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2843 - acc: 0.9476\n",
      "Epoch 350/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.2834 - acc: 0.9480\n",
      "Epoch 351/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2816 - acc: 0.9491\n",
      "Epoch 352/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2776 - acc: 0.9470\n",
      "Epoch 353/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2770 - acc: 0.9488\n",
      "Epoch 354/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2773 - acc: 0.9488\n",
      "Epoch 355/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2732 - acc: 0.9495\n",
      "Epoch 356/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2697 - acc: 0.9515\n",
      "Epoch 357/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2677 - acc: 0.9503\n",
      "Epoch 358/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2668 - acc: 0.9504\n",
      "Epoch 359/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2649 - acc: 0.9533\n",
      "Epoch 360/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2620 - acc: 0.9522\n",
      "Epoch 361/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2542 - acc: 0.9578\n",
      "Epoch 362/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2557 - acc: 0.9539\n",
      "Epoch 363/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2536 - acc: 0.9552\n",
      "Epoch 364/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2517 - acc: 0.9584\n",
      "Epoch 365/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2467 - acc: 0.9603\n",
      "Epoch 366/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2469 - acc: 0.9588\n",
      "Epoch 367/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2456 - acc: 0.9572\n",
      "Epoch 368/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2438 - acc: 0.9554\n",
      "Epoch 369/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2405 - acc: 0.9595\n",
      "Epoch 370/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2374 - acc: 0.9607\n",
      "Epoch 371/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2371 - acc: 0.9579\n",
      "Epoch 372/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2321 - acc: 0.9619\n",
      "Epoch 373/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2329 - acc: 0.9587\n",
      "Epoch 374/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2287 - acc: 0.9634\n",
      "Epoch 375/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2285 - acc: 0.9611\n",
      "Epoch 376/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2258 - acc: 0.9631\n",
      "Epoch 377/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2256 - acc: 0.9642\n",
      "Epoch 378/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2237 - acc: 0.9622\n",
      "Epoch 379/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2225 - acc: 0.9599\n",
      "Epoch 380/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2224 - acc: 0.9625\n",
      "Epoch 381/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2146 - acc: 0.9645\n",
      "Epoch 382/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2145 - acc: 0.9662\n",
      "Epoch 383/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2143 - acc: 0.9655\n",
      "Epoch 384/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2091 - acc: 0.9675\n",
      "Epoch 385/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2110 - acc: 0.9649\n",
      "Epoch 386/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.2090 - acc: 0.9673\n",
      "Epoch 387/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.2062 - acc: 0.9666\n",
      "Epoch 388/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2054 - acc: 0.9672\n",
      "Epoch 389/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1998 - acc: 0.9708\n",
      "Epoch 390/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1983 - acc: 0.9695\n",
      "Epoch 391/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1996 - acc: 0.9666\n",
      "Epoch 392/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.2003 - acc: 0.9652\n",
      "Epoch 393/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1952 - acc: 0.9698\n",
      "Epoch 394/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1941 - acc: 0.9688\n",
      "Epoch 395/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1942 - acc: 0.9699\n",
      "Epoch 396/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1909 - acc: 0.9700\n",
      "Epoch 397/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1895 - acc: 0.9707\n",
      "Epoch 398/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1870 - acc: 0.9730\n",
      "Epoch 399/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1868 - acc: 0.9692\n",
      "Epoch 400/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1873 - acc: 0.9710\n",
      "Epoch 401/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1845 - acc: 0.9697\n",
      "Epoch 402/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1805 - acc: 0.9722\n",
      "Epoch 403/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1787 - acc: 0.9731\n",
      "Epoch 404/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1770 - acc: 0.9724\n",
      "Epoch 405/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1785 - acc: 0.9705\n",
      "Epoch 406/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1745 - acc: 0.9731\n",
      "Epoch 407/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1735 - acc: 0.9732\n",
      "Epoch 408/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1735 - acc: 0.9742\n",
      "Epoch 409/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1723 - acc: 0.9746\n",
      "Epoch 410/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1679 - acc: 0.9726\n",
      "Epoch 411/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1676 - acc: 0.9762\n",
      "Epoch 412/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1652 - acc: 0.9758\n",
      "Epoch 413/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1646 - acc: 0.9752\n",
      "Epoch 414/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1644 - acc: 0.9761\n",
      "Epoch 415/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1590 - acc: 0.9781\n",
      "Epoch 416/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1595 - acc: 0.9779\n",
      "Epoch 417/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1610 - acc: 0.9752\n",
      "Epoch 418/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1585 - acc: 0.9777\n",
      "Epoch 419/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1554 - acc: 0.9781\n",
      "Epoch 420/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1567 - acc: 0.9750\n",
      "Epoch 421/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1533 - acc: 0.9787\n",
      "Epoch 422/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1531 - acc: 0.9764\n",
      "Epoch 423/1000\n",
      "10000/10000 [==============================] - 0s 5us/step - loss: 0.1520 - acc: 0.9775\n",
      "Epoch 424/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1493 - acc: 0.9811\n",
      "Epoch 425/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.1479 - acc: 0.9808\n",
      "Epoch 426/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1488 - acc: 0.9778\n",
      "Epoch 427/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1434 - acc: 0.9821\n",
      "Epoch 428/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1446 - acc: 0.9803\n",
      "Epoch 429/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1443 - acc: 0.9798\n",
      "Epoch 430/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1412 - acc: 0.9816\n",
      "Epoch 431/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1395 - acc: 0.9809\n",
      "Epoch 432/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1418 - acc: 0.9786\n",
      "Epoch 433/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1403 - acc: 0.9801\n",
      "Epoch 434/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1385 - acc: 0.9799\n",
      "Epoch 435/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1359 - acc: 0.9818\n",
      "Epoch 436/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1379 - acc: 0.9772\n",
      "Epoch 437/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1352 - acc: 0.9802\n",
      "Epoch 438/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1336 - acc: 0.9830\n",
      "Epoch 439/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1298 - acc: 0.9831\n",
      "Epoch 440/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1332 - acc: 0.9819\n",
      "Epoch 441/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1311 - acc: 0.9829\n",
      "Epoch 442/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1299 - acc: 0.9816\n",
      "Epoch 443/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1302 - acc: 0.9806\n",
      "Epoch 444/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1284 - acc: 0.9821\n",
      "Epoch 445/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1287 - acc: 0.9800\n",
      "Epoch 446/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1266 - acc: 0.9824\n",
      "Epoch 447/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1230 - acc: 0.9837\n",
      "Epoch 448/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1234 - acc: 0.9836\n",
      "Epoch 449/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1227 - acc: 0.9823\n",
      "Epoch 450/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1246 - acc: 0.9805\n",
      "Epoch 451/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1207 - acc: 0.9842\n",
      "Epoch 452/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1179 - acc: 0.9865\n",
      "Epoch 453/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1177 - acc: 0.9837\n",
      "Epoch 454/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1183 - acc: 0.9841\n",
      "Epoch 455/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1175 - acc: 0.9842\n",
      "Epoch 456/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1178 - acc: 0.9845\n",
      "Epoch 457/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1143 - acc: 0.9859\n",
      "Epoch 458/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1117 - acc: 0.9871\n",
      "Epoch 459/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1137 - acc: 0.9858\n",
      "Epoch 460/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1127 - acc: 0.9842\n",
      "Epoch 461/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1108 - acc: 0.9856\n",
      "Epoch 462/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1117 - acc: 0.9849\n",
      "Epoch 463/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1094 - acc: 0.9842\n",
      "Epoch 464/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1069 - acc: 0.9864\n",
      "Epoch 465/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.1061 - acc: 0.9867\n",
      "Epoch 466/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1059 - acc: 0.9869\n",
      "Epoch 467/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1061 - acc: 0.9858\n",
      "Epoch 468/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1047 - acc: 0.9865\n",
      "Epoch 469/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1026 - acc: 0.9884\n",
      "Epoch 470/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1016 - acc: 0.9889\n",
      "Epoch 471/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1027 - acc: 0.9873\n",
      "Epoch 472/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.1004 - acc: 0.9864\n",
      "Epoch 473/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1005 - acc: 0.9852\n",
      "Epoch 474/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.1005 - acc: 0.9870\n",
      "Epoch 475/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0977 - acc: 0.9883\n",
      "Epoch 476/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0984 - acc: 0.9865\n",
      "Epoch 477/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0990 - acc: 0.9850\n",
      "Epoch 478/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0957 - acc: 0.9895\n",
      "Epoch 479/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0965 - acc: 0.9876\n",
      "Epoch 480/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0947 - acc: 0.9891\n",
      "Epoch 481/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0936 - acc: 0.9878\n",
      "Epoch 482/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0933 - acc: 0.9888\n",
      "Epoch 483/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0925 - acc: 0.9888\n",
      "Epoch 484/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0939 - acc: 0.9876\n",
      "Epoch 485/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0901 - acc: 0.9900\n",
      "Epoch 486/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0912 - acc: 0.9895\n",
      "Epoch 487/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0901 - acc: 0.9893\n",
      "Epoch 488/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0904 - acc: 0.9878\n",
      "Epoch 489/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0885 - acc: 0.9888\n",
      "Epoch 490/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0910 - acc: 0.9890\n",
      "Epoch 491/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0862 - acc: 0.9891\n",
      "Epoch 492/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0848 - acc: 0.9898\n",
      "Epoch 493/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0833 - acc: 0.9913\n",
      "Epoch 494/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0851 - acc: 0.9911\n",
      "Epoch 495/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0851 - acc: 0.9898\n",
      "Epoch 496/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0848 - acc: 0.9896\n",
      "Epoch 497/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0827 - acc: 0.9898\n",
      "Epoch 498/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0826 - acc: 0.9904\n",
      "Epoch 499/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0818 - acc: 0.9905\n",
      "Epoch 500/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0801 - acc: 0.9903\n",
      "Epoch 501/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0801 - acc: 0.9910\n",
      "Epoch 502/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0795 - acc: 0.9910\n",
      "Epoch 503/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0807 - acc: 0.9897\n",
      "Epoch 504/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0776 - acc: 0.9909\n",
      "Epoch 505/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0796 - acc: 0.9897\n",
      "Epoch 506/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0774 - acc: 0.9901\n",
      "Epoch 507/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0777 - acc: 0.9904\n",
      "Epoch 508/1000\n",
      "10000/10000 [==============================] - 0s 13us/step - loss: 0.0772 - acc: 0.9902\n",
      "Epoch 509/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0762 - acc: 0.9909\n",
      "Epoch 510/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0762 - acc: 0.9898\n",
      "Epoch 511/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0736 - acc: 0.9917\n",
      "Epoch 512/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0754 - acc: 0.9911\n",
      "Epoch 513/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0721 - acc: 0.9928\n",
      "Epoch 514/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0720 - acc: 0.9921\n",
      "Epoch 515/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0739 - acc: 0.9919\n",
      "Epoch 516/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0718 - acc: 0.9918\n",
      "Epoch 517/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0718 - acc: 0.9900\n",
      "Epoch 518/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0693 - acc: 0.9930\n",
      "Epoch 519/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0713 - acc: 0.9916\n",
      "Epoch 520/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0694 - acc: 0.9924\n",
      "Epoch 521/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0670 - acc: 0.9935\n",
      "Epoch 522/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0707 - acc: 0.9915\n",
      "Epoch 523/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0699 - acc: 0.9916\n",
      "Epoch 524/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0677 - acc: 0.9924\n",
      "Epoch 525/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0676 - acc: 0.9923\n",
      "Epoch 526/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0662 - acc: 0.9932\n",
      "Epoch 527/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0655 - acc: 0.9930\n",
      "Epoch 528/1000\n",
      "10000/10000 [==============================] - ETA: 0s - loss: 0.0658 - acc: 0.993 - 0s 7us/step - loss: 0.0654 - acc: 0.9933\n",
      "Epoch 529/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0639 - acc: 0.9931\n",
      "Epoch 530/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0670 - acc: 0.9923\n",
      "Epoch 531/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0644 - acc: 0.9919\n",
      "Epoch 532/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0627 - acc: 0.9930\n",
      "Epoch 533/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0615 - acc: 0.9937\n",
      "Epoch 534/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0627 - acc: 0.9917\n",
      "Epoch 535/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0611 - acc: 0.9938\n",
      "Epoch 536/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0609 - acc: 0.9931\n",
      "Epoch 537/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0609 - acc: 0.9947\n",
      "Epoch 538/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0595 - acc: 0.9940\n",
      "Epoch 539/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0591 - acc: 0.9950\n",
      "Epoch 540/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0597 - acc: 0.9925\n",
      "Epoch 541/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0581 - acc: 0.9935\n",
      "Epoch 542/1000\n",
      "10000/10000 [==============================] - 0s 13us/step - loss: 0.0590 - acc: 0.9943\n",
      "Epoch 543/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0574 - acc: 0.9942\n",
      "Epoch 544/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0573 - acc: 0.9937\n",
      "Epoch 545/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0566 - acc: 0.9938\n",
      "Epoch 546/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0546 - acc: 0.9948\n",
      "Epoch 547/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0569 - acc: 0.9934\n",
      "Epoch 548/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0571 - acc: 0.9921\n",
      "Epoch 549/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0557 - acc: 0.9940\n",
      "Epoch 550/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0527 - acc: 0.9955\n",
      "Epoch 551/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0536 - acc: 0.9948\n",
      "Epoch 552/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0525 - acc: 0.9952\n",
      "Epoch 553/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0514 - acc: 0.9947\n",
      "Epoch 554/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0524 - acc: 0.9946\n",
      "Epoch 555/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0509 - acc: 0.9958\n",
      "Epoch 556/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0503 - acc: 0.9950\n",
      "Epoch 557/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0500 - acc: 0.9947\n",
      "Epoch 558/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0503 - acc: 0.9955\n",
      "Epoch 559/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0511 - acc: 0.9933\n",
      "Epoch 560/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0475 - acc: 0.9960\n",
      "Epoch 561/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0469 - acc: 0.9957\n",
      "Epoch 562/1000\n",
      "10000/10000 [==============================] - 0s 5us/step - loss: 0.0483 - acc: 0.9949\n",
      "Epoch 563/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0466 - acc: 0.9964\n",
      "Epoch 564/1000\n",
      "10000/10000 [==============================] - 0s 5us/step - loss: 0.0488 - acc: 0.9938\n",
      "Epoch 565/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0468 - acc: 0.9956\n",
      "Epoch 566/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0455 - acc: 0.9962\n",
      "Epoch 567/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0460 - acc: 0.9953\n",
      "Epoch 568/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0448 - acc: 0.9960\n",
      "Epoch 569/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0456 - acc: 0.9954\n",
      "Epoch 570/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0447 - acc: 0.9960\n",
      "Epoch 571/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0440 - acc: 0.9954\n",
      "Epoch 572/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0430 - acc: 0.9959\n",
      "Epoch 573/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0419 - acc: 0.9962\n",
      "Epoch 574/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0417 - acc: 0.9966\n",
      "Epoch 575/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0416 - acc: 0.9968\n",
      "Epoch 576/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0433 - acc: 0.9954\n",
      "Epoch 577/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0410 - acc: 0.9966\n",
      "Epoch 578/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0409 - acc: 0.9964\n",
      "Epoch 579/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0421 - acc: 0.9964\n",
      "Epoch 580/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0403 - acc: 0.9967\n",
      "Epoch 581/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0411 - acc: 0.9956\n",
      "Epoch 582/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0397 - acc: 0.9964\n",
      "Epoch 583/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0409 - acc: 0.9952\n",
      "Epoch 584/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0394 - acc: 0.9957\n",
      "Epoch 585/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0384 - acc: 0.9969\n",
      "Epoch 586/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0389 - acc: 0.9968\n",
      "Epoch 587/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0363 - acc: 0.9974\n",
      "Epoch 588/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0371 - acc: 0.9970\n",
      "Epoch 589/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0373 - acc: 0.9969\n",
      "Epoch 590/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0360 - acc: 0.9977\n",
      "Epoch 591/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0376 - acc: 0.9961\n",
      "Epoch 592/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0366 - acc: 0.9970\n",
      "Epoch 593/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0374 - acc: 0.9963\n",
      "Epoch 594/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0345 - acc: 0.9980\n",
      "Epoch 595/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0353 - acc: 0.9979\n",
      "Epoch 596/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0363 - acc: 0.9962\n",
      "Epoch 597/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0354 - acc: 0.9970\n",
      "Epoch 598/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0347 - acc: 0.9971\n",
      "Epoch 599/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0336 - acc: 0.9978\n",
      "Epoch 600/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0350 - acc: 0.9974\n",
      "Epoch 601/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0334 - acc: 0.9968\n",
      "Epoch 602/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0348 - acc: 0.9967\n",
      "Epoch 603/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0327 - acc: 0.9969\n",
      "Epoch 604/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0338 - acc: 0.9971\n",
      "Epoch 605/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0343 - acc: 0.9967\n",
      "Epoch 606/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0327 - acc: 0.9976\n",
      "Epoch 607/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0320 - acc: 0.9974\n",
      "Epoch 608/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0310 - acc: 0.9977\n",
      "Epoch 609/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0318 - acc: 0.9973\n",
      "Epoch 610/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0308 - acc: 0.9977\n",
      "Epoch 611/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0316 - acc: 0.9977\n",
      "Epoch 612/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0302 - acc: 0.9977\n",
      "Epoch 613/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0301 - acc: 0.9980\n",
      "Epoch 614/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0301 - acc: 0.9980\n",
      "Epoch 615/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0294 - acc: 0.9982\n",
      "Epoch 616/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0304 - acc: 0.9971\n",
      "Epoch 617/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0284 - acc: 0.9977\n",
      "Epoch 618/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0296 - acc: 0.9974\n",
      "Epoch 619/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0299 - acc: 0.9975\n",
      "Epoch 620/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0295 - acc: 0.9979\n",
      "Epoch 621/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0273 - acc: 0.9985\n",
      "Epoch 622/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0285 - acc: 0.9978\n",
      "Epoch 623/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0289 - acc: 0.9980\n",
      "Epoch 624/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0284 - acc: 0.9980\n",
      "Epoch 625/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0274 - acc: 0.9981\n",
      "Epoch 626/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0261 - acc: 0.9986\n",
      "Epoch 627/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0280 - acc: 0.9976\n",
      "Epoch 628/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0277 - acc: 0.9979\n",
      "Epoch 629/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0276 - acc: 0.9980\n",
      "Epoch 630/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0268 - acc: 0.9985\n",
      "Epoch 631/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0271 - acc: 0.9976\n",
      "Epoch 632/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0255 - acc: 0.9986\n",
      "Epoch 633/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0258 - acc: 0.9983\n",
      "Epoch 634/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0251 - acc: 0.9982\n",
      "Epoch 635/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0265 - acc: 0.9978\n",
      "Epoch 636/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0260 - acc: 0.9979\n",
      "Epoch 637/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0257 - acc: 0.9978\n",
      "Epoch 638/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0258 - acc: 0.9973\n",
      "Epoch 639/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0259 - acc: 0.9978\n",
      "Epoch 640/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0253 - acc: 0.9980\n",
      "Epoch 641/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0254 - acc: 0.9976\n",
      "Epoch 642/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0234 - acc: 0.9987\n",
      "Epoch 643/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0237 - acc: 0.9986\n",
      "Epoch 644/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0237 - acc: 0.9988\n",
      "Epoch 645/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0241 - acc: 0.9977\n",
      "Epoch 646/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0234 - acc: 0.9988\n",
      "Epoch 647/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0247 - acc: 0.9982\n",
      "Epoch 648/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0228 - acc: 0.9984\n",
      "Epoch 649/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0228 - acc: 0.9984\n",
      "Epoch 650/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0230 - acc: 0.9986\n",
      "Epoch 651/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0225 - acc: 0.9986\n",
      "Epoch 652/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0234 - acc: 0.9983\n",
      "Epoch 653/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0219 - acc: 0.9990\n",
      "Epoch 654/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0236 - acc: 0.9980\n",
      "Epoch 655/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0209 - acc: 0.9989\n",
      "Epoch 656/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0222 - acc: 0.9984\n",
      "Epoch 657/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0213 - acc: 0.9987\n",
      "Epoch 658/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0211 - acc: 0.9985\n",
      "Epoch 659/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0219 - acc: 0.9978\n",
      "Epoch 660/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0220 - acc: 0.9982\n",
      "Epoch 661/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0205 - acc: 0.9990\n",
      "Epoch 662/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0213 - acc: 0.9984\n",
      "Epoch 663/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0203 - acc: 0.9988\n",
      "Epoch 664/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0209 - acc: 0.9987\n",
      "Epoch 665/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0203 - acc: 0.9986\n",
      "Epoch 666/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0209 - acc: 0.9988\n",
      "Epoch 667/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0210 - acc: 0.9977\n",
      "Epoch 668/1000\n",
      "10000/10000 [==============================] - 0s 12us/step - loss: 0.0197 - acc: 0.9991\n",
      "Epoch 669/1000\n",
      "10000/10000 [==============================] - 0s 12us/step - loss: 0.0193 - acc: 0.9989\n",
      "Epoch 670/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0205 - acc: 0.9985\n",
      "Epoch 671/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0198 - acc: 0.9989\n",
      "Epoch 672/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0192 - acc: 0.9986\n",
      "Epoch 673/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0207 - acc: 0.9982\n",
      "Epoch 674/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0197 - acc: 0.9987\n",
      "Epoch 675/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0191 - acc: 0.9987\n",
      "Epoch 676/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0187 - acc: 0.9992\n",
      "Epoch 677/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0190 - acc: 0.9987\n",
      "Epoch 678/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0195 - acc: 0.9986\n",
      "Epoch 679/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0185 - acc: 0.9990\n",
      "Epoch 680/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0189 - acc: 0.9982\n",
      "Epoch 681/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0186 - acc: 0.9989\n",
      "Epoch 682/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0185 - acc: 0.9986\n",
      "Epoch 683/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0170 - acc: 0.9992\n",
      "Epoch 684/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0178 - acc: 0.9990\n",
      "Epoch 685/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0180 - acc: 0.9984\n",
      "Epoch 686/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0182 - acc: 0.9991\n",
      "Epoch 687/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0182 - acc: 0.9991\n",
      "Epoch 688/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0181 - acc: 0.9990\n",
      "Epoch 689/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0173 - acc: 0.9991\n",
      "Epoch 690/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0168 - acc: 0.9987\n",
      "Epoch 691/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0171 - acc: 0.9994\n",
      "Epoch 692/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0168 - acc: 0.9991\n",
      "Epoch 693/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0167 - acc: 0.9988\n",
      "Epoch 694/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0168 - acc: 0.9993\n",
      "Epoch 695/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0169 - acc: 0.9989\n",
      "Epoch 696/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0160 - acc: 0.9992\n",
      "Epoch 697/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0173 - acc: 0.9981\n",
      "Epoch 698/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0170 - acc: 0.9988\n",
      "Epoch 699/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0165 - acc: 0.9989\n",
      "Epoch 700/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0166 - acc: 0.9989\n",
      "Epoch 701/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0158 - acc: 0.9987\n",
      "Epoch 702/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0164 - acc: 0.9987\n",
      "Epoch 703/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0155 - acc: 0.9989\n",
      "Epoch 704/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0152 - acc: 0.9994\n",
      "Epoch 705/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0154 - acc: 0.9992\n",
      "Epoch 706/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0160 - acc: 0.9989\n",
      "Epoch 707/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0156 - acc: 0.9991\n",
      "Epoch 708/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0154 - acc: 0.9992\n",
      "Epoch 709/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0153 - acc: 0.9989\n",
      "Epoch 710/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0151 - acc: 0.9990\n",
      "Epoch 711/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0151 - acc: 0.9995\n",
      "Epoch 712/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0150 - acc: 0.9993\n",
      "Epoch 713/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0149 - acc: 0.9988\n",
      "Epoch 714/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0146 - acc: 0.9994\n",
      "Epoch 715/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0151 - acc: 0.9995\n",
      "Epoch 716/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0144 - acc: 0.9991\n",
      "Epoch 717/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0147 - acc: 0.9985\n",
      "Epoch 718/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0142 - acc: 0.9990\n",
      "Epoch 719/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0138 - acc: 0.9995\n",
      "Epoch 720/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0143 - acc: 0.9991\n",
      "Epoch 721/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0138 - acc: 0.9990\n",
      "Epoch 722/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0136 - acc: 0.9994\n",
      "Epoch 723/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0134 - acc: 0.9990\n",
      "Epoch 724/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0145 - acc: 0.9991A: 0s - loss: 0.0144 - acc: 0.999\n",
      "Epoch 725/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0133 - acc: 0.9995\n",
      "Epoch 726/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0139 - acc: 0.9991\n",
      "Epoch 727/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0135 - acc: 0.9993\n",
      "Epoch 728/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0132 - acc: 0.9991\n",
      "Epoch 729/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0127 - acc: 0.9994\n",
      "Epoch 730/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0132 - acc: 0.9992\n",
      "Epoch 731/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0130 - acc: 0.9995\n",
      "Epoch 732/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0131 - acc: 0.9995\n",
      "Epoch 733/1000\n",
      "10000/10000 [==============================] - 0s 5us/step - loss: 0.0132 - acc: 0.9989\n",
      "Epoch 734/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0125 - acc: 0.9995\n",
      "Epoch 735/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0127 - acc: 0.9995\n",
      "Epoch 736/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0130 - acc: 0.9988\n",
      "Epoch 737/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0128 - acc: 0.9992\n",
      "Epoch 738/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0126 - acc: 0.9992\n",
      "Epoch 739/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0117 - acc: 0.9994\n",
      "Epoch 740/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0121 - acc: 0.9993\n",
      "Epoch 741/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0117 - acc: 0.9995\n",
      "Epoch 742/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0121 - acc: 0.9995A: 0s - loss: 0.0122 - acc: 0.999\n",
      "Epoch 743/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0120 - acc: 0.9991\n",
      "Epoch 744/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0117 - acc: 0.9993\n",
      "Epoch 745/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0118 - acc: 0.9994\n",
      "Epoch 746/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0121 - acc: 0.9996\n",
      "Epoch 747/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0114 - acc: 0.9997\n",
      "Epoch 748/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0112 - acc: 0.9998\n",
      "Epoch 749/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0113 - acc: 0.9997\n",
      "Epoch 750/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0109 - acc: 0.9998\n",
      "Epoch 751/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0124 - acc: 0.9990\n",
      "Epoch 752/1000\n",
      "10000/10000 [==============================] - 0s 11us/step - loss: 0.0108 - acc: 0.9995\n",
      "Epoch 753/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0113 - acc: 0.9990\n",
      "Epoch 754/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0111 - acc: 0.9993\n",
      "Epoch 755/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0116 - acc: 0.9995\n",
      "Epoch 756/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0108 - acc: 0.9992\n",
      "Epoch 757/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0111 - acc: 0.9993\n",
      "Epoch 758/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0101 - acc: 1.0000\n",
      "Epoch 759/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0114 - acc: 0.9993\n",
      "Epoch 760/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0104 - acc: 0.9995\n",
      "Epoch 761/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0108 - acc: 0.9991\n",
      "Epoch 762/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0112 - acc: 0.9993\n",
      "Epoch 763/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0106 - acc: 0.9998\n",
      "Epoch 764/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0099 - acc: 0.9998\n",
      "Epoch 765/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0104 - acc: 0.9990\n",
      "Epoch 766/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0105 - acc: 0.9993\n",
      "Epoch 767/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0103 - acc: 0.9996\n",
      "Epoch 768/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0105 - acc: 0.9990\n",
      "Epoch 769/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0101 - acc: 0.9995\n",
      "Epoch 770/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0097 - acc: 0.9997\n",
      "Epoch 771/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0103 - acc: 0.9992\n",
      "Epoch 772/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0097 - acc: 0.9995\n",
      "Epoch 773/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0100 - acc: 0.9995\n",
      "Epoch 774/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0100 - acc: 0.9996\n",
      "Epoch 775/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0096 - acc: 0.9995\n",
      "Epoch 776/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0097 - acc: 0.9995\n",
      "Epoch 777/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0101 - acc: 0.9994\n",
      "Epoch 778/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0103 - acc: 0.9993\n",
      "Epoch 779/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0098 - acc: 0.9995\n",
      "Epoch 780/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0095 - acc: 0.9992\n",
      "Epoch 781/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0090 - acc: 0.9994\n",
      "Epoch 782/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0101 - acc: 0.9996\n",
      "Epoch 783/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0090 - acc: 0.9997\n",
      "Epoch 784/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0090 - acc: 0.9997\n",
      "Epoch 785/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0091 - acc: 0.9997\n",
      "Epoch 786/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0089 - acc: 0.9996\n",
      "Epoch 787/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0095 - acc: 0.9997\n",
      "Epoch 788/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0088 - acc: 0.9998\n",
      "Epoch 789/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0088 - acc: 0.9997\n",
      "Epoch 790/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0093 - acc: 0.9996\n",
      "Epoch 791/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0094 - acc: 0.9992\n",
      "Epoch 792/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0084 - acc: 1.0000\n",
      "Epoch 793/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0086 - acc: 0.9998\n",
      "Epoch 794/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0093 - acc: 0.9994\n",
      "Epoch 795/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0090 - acc: 0.9994\n",
      "Epoch 796/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0086 - acc: 0.9994\n",
      "Epoch 797/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0087 - acc: 0.9996\n",
      "Epoch 798/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0084 - acc: 0.9997\n",
      "Epoch 799/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0094 - acc: 0.9987\n",
      "Epoch 800/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0078 - acc: 0.9997\n",
      "Epoch 801/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0082 - acc: 0.9998\n",
      "Epoch 802/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0080 - acc: 0.9997\n",
      "Epoch 803/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0082 - acc: 0.9994\n",
      "Epoch 804/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0080 - acc: 0.9995\n",
      "Epoch 805/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0077 - acc: 0.9996\n",
      "Epoch 806/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0079 - acc: 0.9998\n",
      "Epoch 807/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0074 - acc: 0.9999\n",
      "Epoch 808/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0079 - acc: 0.9996\n",
      "Epoch 809/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0075 - acc: 0.9998\n",
      "Epoch 810/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0081 - acc: 0.9997\n",
      "Epoch 811/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0077 - acc: 0.9998\n",
      "Epoch 812/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0075 - acc: 0.9997\n",
      "Epoch 813/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0087 - acc: 0.9992\n",
      "Epoch 814/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0077 - acc: 0.9996\n",
      "Epoch 815/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0082 - acc: 0.9994\n",
      "Epoch 816/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0076 - acc: 0.9997\n",
      "Epoch 817/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0077 - acc: 0.9996\n",
      "Epoch 818/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0082 - acc: 0.9992\n",
      "Epoch 819/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0076 - acc: 0.9997\n",
      "Epoch 820/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0077 - acc: 0.9996\n",
      "Epoch 821/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0071 - acc: 0.9997\n",
      "Epoch 822/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0071 - acc: 0.9999\n",
      "Epoch 823/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0081 - acc: 0.9993\n",
      "Epoch 824/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0072 - acc: 0.9996\n",
      "Epoch 825/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0072 - acc: 0.9996\n",
      "Epoch 826/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0070 - acc: 0.9998\n",
      "Epoch 827/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0068 - acc: 0.9999\n",
      "Epoch 828/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0070 - acc: 0.9996\n",
      "Epoch 829/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0070 - acc: 0.9999\n",
      "Epoch 830/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0068 - acc: 0.9997\n",
      "Epoch 831/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0074 - acc: 0.9993\n",
      "Epoch 832/1000\n",
      "10000/10000 [==============================] - 0s 12us/step - loss: 0.0071 - acc: 0.9998\n",
      "Epoch 833/1000\n",
      "10000/10000 [==============================] - 0s 9us/step - loss: 0.0066 - acc: 0.9996\n",
      "Epoch 834/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0068 - acc: 0.9996\n",
      "Epoch 835/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0062 - acc: 0.9998\n",
      "Epoch 836/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0064 - acc: 1.0000\n",
      "Epoch 837/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0068 - acc: 0.9996\n",
      "Epoch 838/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0067 - acc: 0.9997\n",
      "Epoch 839/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0066 - acc: 0.9998\n",
      "Epoch 840/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0072 - acc: 0.9995\n",
      "Epoch 841/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0074 - acc: 0.9992\n",
      "Epoch 842/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0071 - acc: 0.9994\n",
      "Epoch 843/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0064 - acc: 1.0000\n",
      "Epoch 844/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0073 - acc: 0.9996\n",
      "Epoch 845/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0058 - acc: 0.9999\n",
      "Epoch 846/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0064 - acc: 0.9998\n",
      "Epoch 847/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0064 - acc: 0.9996\n",
      "Epoch 848/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0063 - acc: 0.9997\n",
      "Epoch 849/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0066 - acc: 0.9997\n",
      "Epoch 850/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0060 - acc: 1.0000\n",
      "Epoch 851/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0063 - acc: 0.9997\n",
      "Epoch 852/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0063 - acc: 0.9996\n",
      "Epoch 853/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0063 - acc: 0.9996\n",
      "Epoch 854/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0060 - acc: 0.9997\n",
      "Epoch 855/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0059 - acc: 0.9999\n",
      "Epoch 856/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0062 - acc: 0.9997\n",
      "Epoch 857/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0063 - acc: 0.9999\n",
      "Epoch 858/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0063 - acc: 0.9998\n",
      "Epoch 859/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0058 - acc: 0.9999\n",
      "Epoch 860/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0056 - acc: 1.0000\n",
      "Epoch 861/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0055 - acc: 0.9999\n",
      "Epoch 862/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0061 - acc: 0.9995\n",
      "Epoch 863/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0053 - acc: 1.0000\n",
      "Epoch 864/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0060 - acc: 0.9996\n",
      "Epoch 865/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0060 - acc: 0.9997\n",
      "Epoch 866/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0056 - acc: 0.9996\n",
      "Epoch 867/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0056 - acc: 0.9997\n",
      "Epoch 868/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0053 - acc: 0.9998\n",
      "Epoch 869/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0054 - acc: 0.9999\n",
      "Epoch 870/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0050 - acc: 0.9999\n",
      "Epoch 871/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0052 - acc: 1.0000\n",
      "Epoch 872/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0055 - acc: 0.9998\n",
      "Epoch 873/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0056 - acc: 0.9996\n",
      "Epoch 874/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0048 - acc: 0.9998\n",
      "Epoch 875/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 876/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0058 - acc: 0.9997\n",
      "Epoch 877/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 878/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0048 - acc: 1.0000\n",
      "Epoch 879/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9999\n",
      "Epoch 880/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 881/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0056 - acc: 0.9995\n",
      "Epoch 882/1000\n",
      "10000/10000 [==============================] - 0s 10us/step - loss: 0.0050 - acc: 0.9999\n",
      "Epoch 883/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 884/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 885/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0049 - acc: 0.9998\n",
      "Epoch 886/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9997\n",
      "Epoch 887/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0051 - acc: 0.9996\n",
      "Epoch 888/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0046 - acc: 0.9998\n",
      "Epoch 889/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9997\n",
      "Epoch 890/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0052 - acc: 0.9998\n",
      "Epoch 891/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0051 - acc: 0.9996\n",
      "Epoch 892/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0048 - acc: 0.9999\n",
      "Epoch 893/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0051 - acc: 0.9998\n",
      "Epoch 894/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0050 - acc: 0.9999\n",
      "Epoch 895/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0049 - acc: 0.9997\n",
      "Epoch 896/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0051 - acc: 0.9997\n",
      "Epoch 897/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0047 - acc: 0.9999\n",
      "Epoch 898/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0048 - acc: 0.9997\n",
      "Epoch 899/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0049 - acc: 0.9998\n",
      "Epoch 900/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0057 - acc: 0.9994\n",
      "Epoch 901/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0048 - acc: 0.9997\n",
      "Epoch 902/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0046 - acc: 0.9999\n",
      "Epoch 903/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0047 - acc: 0.9996\n",
      "Epoch 904/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0044 - acc: 0.9999\n",
      "Epoch 905/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0048 - acc: 0.9996\n",
      "Epoch 906/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0049 - acc: 0.9996\n",
      "Epoch 907/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0047 - acc: 0.9999\n",
      "Epoch 908/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0046 - acc: 0.9999\n",
      "Epoch 909/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0041 - acc: 1.0000\n",
      "Epoch 910/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0043 - acc: 1.0000\n",
      "Epoch 911/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0042 - acc: 1.0000\n",
      "Epoch 912/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0045 - acc: 0.9998\n",
      "Epoch 913/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0045 - acc: 0.9999\n",
      "Epoch 914/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0045 - acc: 0.9998\n",
      "Epoch 915/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0041 - acc: 0.9998\n",
      "Epoch 916/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0043 - acc: 0.9999\n",
      "Epoch 917/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0045 - acc: 0.9998\n",
      "Epoch 918/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0040 - acc: 1.0000\n",
      "Epoch 919/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0048 - acc: 0.9992\n",
      "Epoch 920/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0043 - acc: 0.9997\n",
      "Epoch 921/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0039 - acc: 0.9999\n",
      "Epoch 922/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0040 - acc: 1.0000\n",
      "Epoch 923/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0043 - acc: 0.9999\n",
      "Epoch 924/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 1.0000\n",
      "Epoch 925/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 1.0000\n",
      "Epoch 926/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0037 - acc: 0.9999\n",
      "Epoch 927/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0041 - acc: 0.9998\n",
      "Epoch 928/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0041 - acc: 0.9999\n",
      "Epoch 929/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0042 - acc: 0.9998\n",
      "Epoch 930/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0036 - acc: 1.0000\n",
      "Epoch 931/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0037 - acc: 0.9997\n",
      "Epoch 932/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0041 - acc: 0.9999\n",
      "Epoch 933/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0040 - acc: 0.9998\n",
      "Epoch 934/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0039 - acc: 0.9998\n",
      "Epoch 935/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 0.9999\n",
      "Epoch 936/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0037 - acc: 0.9999\n",
      "Epoch 937/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0037 - acc: 0.9999\n",
      "Epoch 938/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 0.9999\n",
      "Epoch 939/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0044 - acc: 0.9995\n",
      "Epoch 940/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 0.9998\n",
      "Epoch 941/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 1.0000\n",
      "Epoch 942/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 0.9998\n",
      "Epoch 943/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0040 - acc: 0.9998\n",
      "Epoch 944/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 1.0000\n",
      "Epoch 945/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0036 - acc: 0.9999\n",
      "Epoch 946/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0039 - acc: 0.9999\n",
      "Epoch 947/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0035 - acc: 0.9998\n",
      "Epoch 948/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0039 - acc: 0.9996\n",
      "Epoch 949/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0035 - acc: 1.0000\n",
      "Epoch 950/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0032 - acc: 0.9998\n",
      "Epoch 951/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0034 - acc: 0.9998\n",
      "Epoch 952/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0036 - acc: 0.9999\n",
      "Epoch 953/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0036 - acc: 0.9997\n",
      "Epoch 954/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0031 - acc: 0.9999\n",
      "Epoch 955/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0036 - acc: 0.9998\n",
      "Epoch 956/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0038 - acc: 0.9997\n",
      "Epoch 957/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0035 - acc: 0.9997\n",
      "Epoch 958/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0036 - acc: 0.9998\n",
      "Epoch 959/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0036 - acc: 0.9997\n",
      "Epoch 960/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0034 - acc: 1.0000\n",
      "Epoch 961/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0032 - acc: 0.9999\n",
      "Epoch 962/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0035 - acc: 0.9997\n",
      "Epoch 963/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0033 - acc: 0.9999\n",
      "Epoch 964/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0031 - acc: 1.0000\n",
      "Epoch 965/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0033 - acc: 1.0000\n",
      "Epoch 966/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0033 - acc: 0.9998\n",
      "Epoch 967/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0030 - acc: 1.0000\n",
      "Epoch 968/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0030 - acc: 1.0000\n",
      "Epoch 969/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0030 - acc: 0.9998\n",
      "Epoch 970/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0034 - acc: 0.9998\n",
      "Epoch 971/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0034 - acc: 0.9998\n",
      "Epoch 972/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0029 - acc: 1.0000\n",
      "Epoch 973/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0031 - acc: 0.9997\n",
      "Epoch 974/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0029 - acc: 1.0000\n",
      "Epoch 975/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0030 - acc: 0.9999\n",
      "Epoch 976/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0030 - acc: 1.0000\n",
      "Epoch 977/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0032 - acc: 0.9999\n",
      "Epoch 978/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0033 - acc: 0.9996\n",
      "Epoch 979/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0033 - acc: 0.9997\n",
      "Epoch 980/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0028 - acc: 0.9999\n",
      "Epoch 981/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0032 - acc: 1.0000\n",
      "Epoch 982/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0032 - acc: 0.9999\n",
      "Epoch 983/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0028 - acc: 0.9999\n",
      "Epoch 984/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0027 - acc: 0.9999\n",
      "Epoch 985/1000\n",
      "10000/10000 [==============================] - 0s 8us/step - loss: 0.0031 - acc: 0.9997\n",
      "Epoch 986/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0032 - acc: 0.9997\n",
      "Epoch 987/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0032 - acc: 0.9998\n",
      "Epoch 988/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0027 - acc: 1.0000\n",
      "Epoch 989/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0028 - acc: 1.0000\n",
      "Epoch 990/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0027 - acc: 1.0000\n",
      "Epoch 991/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0029 - acc: 0.9999\n",
      "Epoch 992/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0029 - acc: 0.9998\n",
      "Epoch 993/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0027 - acc: 0.9999\n",
      "Epoch 994/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0028 - acc: 0.9999\n",
      "Epoch 995/1000\n",
      "10000/10000 [==============================] - 0s 7us/step - loss: 0.0029 - acc: 1.0000\n",
      "Epoch 996/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0030 - acc: 0.9999\n",
      "Epoch 997/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0030 - acc: 0.9998\n",
      "Epoch 998/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0027 - acc: 0.9999\n",
      "Epoch 999/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0027 - acc: 0.9997\n",
      "Epoch 1000/1000\n",
      "10000/10000 [==============================] - 0s 6us/step - loss: 0.0026 - acc: 1.0000\n"
     ]
    }
   ],
   "source": [
    "history=estimator.fit(x,x)\n",
    "loss_supervised=history.history['loss']\n",
    "acc=history.history['acc']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 68
    },
    "colab_type": "code",
    "id": "tAQF3qFP41-w",
    "outputId": "4e998912-1000-4ef9-8d31-1c6e4f9f7e67"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 3 5 3 3 7 3 0 3 2]\n",
      "10/10 [==============================] - 0s 7ms/step\n",
      "[0 3 5 3 3 7 3 0 3 2]\n"
     ]
    }
   ],
   "source": [
    "x_test=np.random.randint(0,8,10)\n",
    "print(x_test)\n",
    "y_test=estimator.predict(x_test)\n",
    "print(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XlLTMYqN8y3U"
   },
   "source": [
    "## Alternate learning code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            (None, 1)            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 8)            16          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 8)            72          dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 4, 2)         0           dense_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "lambda_1 (Lambda)               (None, 4, 2)         0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "lambda (Lambda)                 (None, 4, 2)         0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "lambda_2 (Lambda)               ()                   0           lambda_1[0][0]                   \n",
      "                                                                 lambda[0][0]                     \n",
      "==================================================================================================\n",
      "Total params: 88\n",
      "Trainable params: 88\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n",
      "None\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_2 (InputLayer)         (None, 4, 2)              0         \n",
      "_________________________________________________________________\n",
      "reshape_1 (Reshape)          (None, 8)                 0         \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 64)                576       \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 8)                 520       \n",
      "=================================================================\n",
      "Total params: 1,096\n",
      "Trainable params: 1,096\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n",
      "None\n",
      "epoch:  0 tx_loss 71.5909652709961 rx_loss 2.0817627906799316\n",
      "epoch:  100 tx_loss 1.5325736999511719 rx_loss 1.9192808866500854\n",
      "epoch:  200 tx_loss 0.5519936084747314 rx_loss 1.6701114177703857\n",
      "epoch:  300 tx_loss 0.23733562231063843 rx_loss 1.4618213176727295\n",
      "epoch:  400 tx_loss 1.1068954467773438 rx_loss 1.3234074115753174\n",
      "epoch:  500 tx_loss 1.0912060737609863 rx_loss 1.1656519174575806\n",
      "epoch:  600 tx_loss 0.7089741230010986 rx_loss 1.0759291648864746\n",
      "epoch:  700 tx_loss 0.6874275207519531 rx_loss 1.0501582622528076\n",
      "epoch:  800 tx_loss 1.6504446268081665 rx_loss 0.9804263114929199\n",
      "epoch:  900 tx_loss 0.37214022874832153 rx_loss 0.9237892031669617\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras.layers import *\n",
    "from sklearn import preprocessing\n",
    "import tensorflow.keras.backend as K\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "sigma= 1e-4\n",
    "\n",
    "# Peturbation Sampling\n",
    "def perturbation(x):\n",
    "    w = K.random_normal(shape = (channel,2), mean=0.0,stddev=sigma**0.5,dtype=None)\n",
    "    xp = ((1-sigma)**0.5)*x + w\n",
    "    return xp\n",
    "\n",
    "# Defining transmitter loss\n",
    "def loss_tx(y_true, y_pred):\n",
    "    return -y_true*y_pred\n",
    "\n",
    "# Defining the policy\n",
    "def get_policy(inp):\n",
    "    xp = inp[0]\n",
    "    x = inp[1]\n",
    "    w = xp - x\n",
    "    policy = -K.sum(w*w)\n",
    "    return policy\n",
    "\n",
    "\n",
    "tx_inp = Input((1,))\n",
    "# Adding embedding layer\n",
    "embbedings_layer = Dense(msg_total, activation = 'relu')(tx_inp)\n",
    "layer_dense = Dense(2*channel, activation = 'relu')(embbedings_layer)\n",
    "# real to complex \n",
    "to_complex = Reshape((channel,2))(layer_dense)\n",
    "# Normalising the output to unit energy\n",
    "x = Lambda(lambda x: keras.backend.l2_normalize(x))(to_complex)\n",
    "# Peturbation sampling \n",
    "xp = Lambda(perturbation)(to_complex)\n",
    "policy = Lambda(get_policy)([xp,x])\n",
    "\n",
    "# model for policy training\n",
    "model_policy = keras.models.Model(inputs=tx_inp, outputs=policy)\n",
    "# model to get the peturbatated output\n",
    "model_tx = keras.models.Model(inputs=tx_inp, outputs=xp)\n",
    "# model to get the encoded message to transmit\n",
    "model_x = keras.models.Model(inputs=tx_inp, outputs=x)\n",
    "\n",
    "model_policy.compile(loss=loss_tx, optimizer=tf.keras.optimizers.SGD(lr = 1e-5))\n",
    "print(model_policy.summary())\n",
    "\n",
    "rx_inp = Input((channel,2))\n",
    "# complex to real\n",
    "to_flat = Reshape((2*channel,))(rx_inp)\n",
    "fc = Dense(8*2*channel, activation = 'relu')(to_flat)\n",
    "softmax = Dense(msg_total, activation = 'softmax')(fc)\n",
    "\n",
    "model_rx = keras.models.Model(inputs=rx_inp, outputs=softmax)\n",
    "\n",
    "model_rx.compile(loss=tf.keras.losses.categorical_crossentropy, optimizer=tf.keras.optimizers.Adam())\n",
    "print(model_rx.summary())\n",
    "\n",
    "loss_tx = []\n",
    "loss_rx = []\n",
    "for epoch in range(epochs):\n",
    "#     Transmitter Training\n",
    "    raw_input = np.random.randint(0,msg_total,(batch_size))\n",
    "    label = np.zeros((batch_size, msg_total))\n",
    "    label[np.arange(batch_size), raw_input] = 1\n",
    "    tx_input = raw_input/float(msg_total)\n",
    "    xp = model_tx.predict(tx_input)\n",
    "    y = xp + np.random.normal(0,0.001,(batch_size, channel,2))\n",
    "    pred = model_rx.predict(y)\n",
    "    loss = np.sum(np.square(label - pred), axis = 1)\n",
    "    history_tx = model_policy.fit(tx_input, loss, batch_size=batch_size, epochs=1, verbose=0)    \n",
    "    loss_tx.append(history_tx.history['loss'][0])\n",
    "    \n",
    "#     Receiver Training\n",
    "    raw_input = np.random.randint(0,msg_total,(batch_size))\n",
    "    label = np.zeros((batch_size, msg_total))\n",
    "    label[np.arange(batch_size), raw_input] = 1\n",
    "    tx_input = raw_input/float(msg_total)\n",
    "    x = model_x.predict(tx_input)\n",
    "    y = x + np.random.normal(0,0.001,(batch_size, channel,2))\n",
    "    history_rx = model_rx.fit(y, label, batch_size=batch_size, epochs=1, verbose=0)\n",
    "    loss_rx.append(history_rx.history['loss'][0])\n",
    "    \n",
    "    if(epoch % 100 == 0):\n",
    "        print('epoch: ', epoch, 'tx_loss', history_tx.history['loss'][0], 'rx_loss', history_rx.history['loss'][0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Comparision"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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xjZt2kSlSpVo1KgRbqJYE81UlZ07d7Jp0yYaN26c+wuyYNVHxhRjhw4donr16pYQDAAiQvXq1QtUcrSkYEwxZwnBBCvo30P0JIXly+HeeyE52e9IjDGmyIqepLBmDTz8MGzd6nckxpQoDz/8MC1btqRNmzbEx8fzww95WXMovM4444wCX2Pu3LlccMEFmfYvXryY6dOn5/l6W7ZsYeDAgbme17dvX3bv3p3n64db9DQ0V6jgfh444G8cxpQg33//PZ988gmLFi2ibNmy7NixgyNHjkTs/QKLy8dk/X32u+++i9h7L168mMTERPr27ZvpWEpKCqVKZf1xWrduXd57771cr5+fhBMJ0VNSsKRgTNht3bqVGjVqULZsWQBq1KhB3bp1ATclzY4dOwBITEykR48eAIwZM4Yrr7ySLl260KRJE8aPHx+43pNPPkmnTp1o06YNo0ePBiApKYmmTZty1VVX0apVKx588EHuvPPOwGsmTpzIzTffDEDFihUDcZ111lnEx8fTqlUrvvnGrbs0Y8YMunTpQvv27bn00kvZv38/AJ9//jnNmjWjffv2fPDBB5nu88iRI9x///1MnTqV+Ph4pk6dGriPrl27cuWVV5KUlES3bt1o37497du3DySopKQkWrVqFYj1kksuoU+fPjRp0oS77ror8B5pv6+kpCSaN2/OiBEjaNmyJeeddx5//vknAD/++GOgRHbnnXcGrhtOESspiEgcbonBskAZ4GNVHZXhHAGeAfoCB4HhqrooIgGlJQXvj8CYEucf/4DFi8N7zfh4ePrpbA+fd955PPDAA5x22mn06tWLQYMG0b1791wvu3TpUubPn8+BAwdo164d/fr1Y/ny5axdu5YFCxagqvTv35+vv/6aBg0asHbtWiZNmkRCQgLJycl06dKFJ598EoCpU6dyzz33pLv+5MmT6d27N/fccw+pqakcPHiQHTt28NBDDzFr1iwqVKjA448/ztixY7nrrrsYMWIEs2fP5tRTT2XQoEGZ4i1TpgwPPPAAiYmJPP/884BLbitXrmTevHmUK1eOgwcPMnPmTOLi4li7di1DhgzJcp62xYsX89NPP1G2bFmaNm3K3/72N+rXT7+K6dq1a5kyZQrjx4/nsssu4/3332fo0KFcffXVjB8/ni5dujBq1KhM1w6HSJYUDgM9VbUt0AY4W0S6ZTjnfKCJt12PW/s2MqykYEzYVaxYkYULFzJu3Dhq1qzJoEGDmDhxYq6vu+iiiyhXrhw1atTg7LPPZsGCBcyYMYMZM2bQrl072rdvz+rVq1m7di0ADRs2JCEhAYCaNWty8sknM3/+fHbu3Mnq1avp2rVruut36tSJ1157jTFjxrBs2TIqVarE/PnzWblyJV27diU+Pp5JkyaxYcMGVq9eTePGjWnSpAkiwtChQ0O+//79+1OuXDnADSQcMWIErVu35tJLL2XlypVZvuacc86hcuXKxMXF0aJFCzZsyDxPXePGjYmPjwegQ4cOJCUlsXv3bvbt20eXLl0AuPzyy0OOMy8iVlJQt3pP2tfy0kAssCvDaRcBr3vnzveWVqyjquFvDbakYEq6HL7RR1JsbCw9evSgR48etG7dmkmTJjF8+HBKlSrFsWPHADL1m8/YbVJEUFXuvvtu/vrXv6Y7lpSURIW0/7+ewYMH884779CsWTMGDBiQ6XpnnXUWX3/9NZ9++inDhw/ntttuo2rVqpx77rlMmTIl3bmLC1C6Co7rqaeeonbt2ixZsoRjx44RFxeX5WvSqtrA/e5SUlJyPSet+qgwRLRNQURiRWQxsB2Yq6rLM5xyErAx6Pkmb1/4WVIwJuzWrFkT+DYP7gO2YcOGgKsjX7hwIQDvv/9+utd9/PHHHDp0iJ07dzJ37lw6depE7969mTBhQqCef/PmzWzfvj3L9x0wYAAff/wxU6ZMYfDgwZmOb9iwgdq1azNixAiuu+46Fi1aREJCAt9++y3r1q0D4MCBA/z88880a9aMpKQk1q9fD5ApaaSpVKkS+/bty/Z3sWfPHurUqUNMTAxvvPEGqamp2Z6bH1WqVKFSpUqB3l1vv/12WK+fJqJJQVVTVTUeqAd0E5Gz83MdEbleRBJFJDE5v+MMLCkYE3b79+9n2LBhtGjRgjZt2rBy5UrGjBkDwOjRo7nlllvo2LEjsbGx6V7Xpk0bzj77bBISErjvvvuoW7cu5513HpdffjldunShdevWDBw4MNsP4apVq9K8eXM2bNhA586dMx2fO3cubdu2pV27dkydOpVbbrmFmjVrMnHiRIYMGUKbNm3o0qULq1evJi4ujnHjxtGvXz/at29PrVq1snzPs88+m5UrVwYamjO68cYbmTRpEm3btmX16tWZSjfh8OqrrzJixAji4+M5cOAAlStXDvt7FNoazSJyP/Cnqj4ZtO9lXAliivd8DdAjp+qjjh07ar4X2SldGu64Ax59NH+vN6aIWbVqFc2bN/c7jDwZM2YMFStW5I477vA7lGJn//79gR5Wjz32GFu3buWZZ57JdF5WfxcislBVO+b2HhErKYhITRGp4j0uB5wLZKy8mwZcJU4CsCci7QlpKlSwkoIxptj69NNP03Wzvffee8P+HpEcvFYHmCQiMbjk86aqzhSRGwBU9SVgOq476jpcl9SrIxiPJQVjioC06iWTd4MGDcqyy2w4RbL30VKgXRb7Xwp6rMBNkYohE0sKxhiTo+gZ0QyWFIwxJheWFIwxxgREV1KoWNGmuTDGmBxEV1KoXBn27PE7CmNKnI8++ggRYfXq1YF9wRPB5Xfa6fyYOHEiW7ZsCTy/7rrrsp1yIi92797Nf//733y9NpRpse+//35mzZqVr+uHkyUFY0yBTZkyhX79+mU7Gjg/SSGr6R9CkTEpvPLKK7Ro0SJf1wqWU1LILdbp06dTpUqVHM954IEH6NWrV77jCxdLCsaYAtm/fz/z58/nhRdeyHKkb1bTTh84cIBrrrmGzp07065dOz7++GPAfaD379+fnj17cs455zB37lx69OjBwIEDadasGVdccQVpA24feOABOnXqRKtWrbj++utRVd577z0SExO54ooriI+P588//6RHjx6B2UorVqzIPffcQ9u2bUlISGDbtm0ArF+/noSEBFq3bs29994bGCAWbNSoUaxfvz4wbfXcuXPp1q0b/fv3DySdiy++mA4dOtCyZUvGjRsXeG0o02IPHz48sO5Co0aNGD16NO3bt6d169aBElhycjLnnnsuLVu25LrrrqNhw4aB6cnDJm3RiuKydejQQfPtwQdVQfXw4fxfw5giZOXKlYHHt9yi2r17eLdbbsk9hjfffFNHjBihqqpnnnmmJiYmqqrqr7/+qi1btlRV1ddee01vuummwGvuvvtufeONN1RVddeuXdqkSRPdv3+/vvbaa3rSSSfpzp07VVV1zpw5esIJJ+jGjRs1NTVVExIS9JtvvlFVDZyjqjp06FCdNm2aqqp2795df/zxx8Cx4OdA4Lw777xTH3zwQVVV7devn06ePFlVVV988UWtUKFCpvsMvp+02MqXL6+//PJLYF9aTAcPHtSWLVvqjh07VFW1YcOGmpycrL/++qvGxsbqTz/9pKqql156aeD3MGzYMH333XcD5z/77LOqqvrCCy/otddeq6qqN910kz7yyCOqqvrZZ58poMnJyZliDf67SAMkagifsdFVUkgrvllpwZiwmTJlCpdddhkAl112WbZVSMFmzJjBY489Rnx8PD169ODQoUP89ttvAJx77rlUq1YtcG7nzp2pV68eMTExxMfHk5SUBMCcOXM4/fTTad26NbNnz2bFihW5vm+ZMmUCS22mTUkNbgW5Sy+9FMjblNSdO3emcePGgefPPvtsoBSycePGdJMFpslqWuysXHLJJZnOmTdvXmACwD59+lC1atWQYw1V9CzHCa76CGD3bqhZ099YjAkzP2bO/uOPP5g9ezbLli1DREhNTUVEAgvgZEdVef/992natGm6/T/88EOmieSymmr60KFD3HjjjSQmJlK/fn3GjBmTaXrurJQuXTowzXZ201bnRXCsc+fOZdasWXz//feUL18+kOwyCnVa7LTzwhFnXkRXSSEtKVhJwZiweO+997jyyivZsGEDSUlJbNy4kcaNGweWv0yTcdrp3r1789xzzwXaB3766ac8vW/ah22NGjXYv39/ujWQc5viOisJCQmB6b2zm5I6lKmzq1atSvny5Vm9ejXz58/PUwyh6Nq1K++88w7gSlu7dmVcoqbgLCkYY/JtypQpDBgwIN2+v/zlL5mqkDJOO33fffdx9OhR2rRpQ8uWLbnvvvvy9L5VqlRhxIgRtGrVit69e9OpU6fAseHDh3PDDTcEGppD8fTTTzN27FjatGnDunXrspySunr16nTt2pVWrVqlWyM6TZ8+fUhJSaF58+aMGjUqsFJcOI0ePZoZM2bQqlUr3n33XU488UQqVaoU1vcotKmzw6VAU2cvWeLWnH3/ffDq64wpzorj1NlF0cGDBylXrhwiwttvv82UKVMCPaKKksOHDxMbG0upUqX4/vvvGTlyZJYrxxVk6uzobFOwkoIxJsjChQu5+eabUVWqVKnChAkT/A4pS7/99huXXXYZx44do0yZMowfPz7s7xGdSSGXkYXGmOjSrVs3lixZ4ncYuWrSpEme21/yKrraFE44wf20koIpQYpbFbCJrIL+PURXUoiNhUqVLCmYEiMuLo6dO3daYjCASwg7d+4kLi4u39eIruojsKkuTIlSr149Nm3aRHJyst+hmCIiLi6OevXq5fv1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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "epoch_arr=range(1,epochs+1)\n",
    "plt.title('Training error with epochs')\n",
    "plt.plot(epoch_arr,loss_supervised,'r',label='Supervised training')\n",
    "plt.plot(epoch_arr,loss_rx,'b',label='Alternating training')\n",
    "plt.xlabel('epochs')\n",
    "plt.ylabel('training error')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "supervised.ipynb",
   "provenance": [],
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
